home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / COMMS / C035.ZIP / JMODEM.H < prev    next >
Text File  |  1990-02-17  |  9KB  |  155 lines

  1. /****************************************************************************/
  2. /*   FILE JMODEM.H                                                          */
  3. /*   Created 11-JAN-1990                Richard B. Johnson                  */
  4. /*                                      405 Broughton Drive                 */
  5. /*                                      Beverly, Massachusetts 01915        */
  6. /*                                      BBS (508) 922-3166                  */
  7. /*                                                                          */
  8. /*                  Parameters that are specific to JMODEM                  */
  9. /****************************************************************************/
  10. #define VERS            "VERSION 3.01"  /* Version number               */
  11. #define _8K             0x2000          /* 4096 bytes                   */
  12. #define BLK_SIZ         0x200           /* Starting block size          */
  13. #define OVRHD           0x06            /* Private, JMODEM overhead     */
  14. #define DAT_LEN         _8K + 1024      /* Data buffer length           */
  15. #define DAT_MAX         _8K             /* Max block length             */
  16. #define OPEN_READ       0x01            /* Private OPEN file function   */
  17. #define CREATE          0x02            /* Private CREATE file function */
  18. #define WRITE           0x03            /* Private WRITE file function  */
  19. #define CLOSE           0x04            /* Private CLOSE file function  */
  20. #define DELETE          0x05            /* Private DELETE file function */
  21. #define READ            0x06            /* Private READ file function   */
  22. #define GET_CRC         0x00            /* Private Get CRC function     */
  23. #define SET_CRC         0x01            /* Private Set CRC function     */
  24. #define NORM            0x01            /* Private, show normal data    */
  25. #define COMP            0x02            /* Private, show compressed     */
  26. #define EOF_            0x04            /* Private, show end of file    */
  27. #define TIMOUT          0x5A            /* Timeout (ticks) for read     */
  28. #define EOT             0x04            /* "D" - 64                     */
  29. #define ACK             0x06            /* "F" - 64                     */
  30. #define NAK             0x15            /* "U" - 64                     */
  31. #define SYN             0x16            /* "V" - 64                     */
  32. #define CAN             0x18            /* "X" - 64                     */
  33. #define SCR_SGN         0x01            /* Signon screen                */
  34. #define SCR_BOX         0x02            /* Write box on the screen      */
  35. #define SCR_TXT         0x03            /* Write text to x/y address    */
  36. #define SCR_STA         0x04            /* Write status box             */
  37. #define SCR_FIL         0x05            /* Write open file box          */
  38. #define SCR_FOK         0x06            /* File open okay               */
  39. #define SCR_FNF         0x07            /* File not found               */
  40. #define SCR_FCR         0x08            /* Can't create the file        */
  41. #define SCR_FRN         0x09            /* Renamed the file             */
  42. #define SCR_SYS         0x0A            /* Show system parameters       */
  43. #define SCR_SYT         0x0B            /* Show trans synchronization   */
  44. #define SCR_SYR         0x0C            /* Show Receive synchronization */
  45. #define SCR_END         0x0D            /* Exit all screens             */
  46. #define JM_NRM          0x00            /* Normal exit                  */
  47. #define JM_FNF          0x01            /* File not found               */
  48. #define JM_REN          0x02            /* Can't rename the file        */
  49. #define JM_CRE          0x03            /* Can't create the file        */
  50. #define JM_MEM          0x04            /* No memory available          */
  51. #define JM_CAR          0x05            /* Modem carrier failed         */
  52. #define JM_SYN          0x06            /* Can't synchronize            */
  53. #define JM_ABT          0x07            /* Aborted                      */
  54. #define JM_CMD          0x08            /* Command-line error           */
  55. #define JM_TIM          0x09            /* Time-out                     */
  56. #define JM_FAT          0x0A            /* Fatal error                  */
  57. #define JM_MAX          0xFFFF          /* Maximum buffer space exceeded*/
  58.  
  59. /****************************************************************************/
  60. /*                     Structures and templates                             */
  61. /****************************************************************************/
  62. typedef struct
  63.         {                               /* Structure for JMODEM status  */
  64.         unsigned short  s_blk;          /* Block being sent / received  */
  65.         unsigned short  s_len;          /* Length of the block          */
  66.         unsigned long   s_byt;          /* Bytes so far                 */
  67.         unsigned short  s_cps;          /* Speed, characters / second   */
  68.         unsigned char  *s_sta;          /* Pointer to current status    */
  69.         } SYS;
  70.  
  71. typedef struct                          /* JMODEM block header structure */
  72.         {
  73.         unsigned char len_low;          /* Block length, low byte        */
  74.         unsigned char len_hig;          /* Block length, high byte       */
  75.         unsigned char blk_typ;          /* Kind of block EOF, COMP, etc  */
  76.         unsigned char blk_num;          /* Block number (starts at 1 )   */
  77.         unsigned char blk_dat;          /* First data character          */
  78.         } JBUF;
  79.  
  80. typedef struct                          /* JMODEM block length           */
  81.         {
  82.         unsigned char blen_low;         /* Block length (low byte)       */
  83.         unsigned char blen_hig;         /* Block length (high byte)      */
  84.         unsigned char blok_dat;         /* Rest of the data-block        */
  85.         } BLK;
  86.  
  87. /****************************************************************************/
  88. /*                   External function prototypes                           */
  89. /****************************************************************************/
  90. extern short screen(
  91.              short,                     /* Function (in SCREEN.H)       */
  92.              SYS *,                     /* Pointer to status block      */
  93.              char * );                  /* Text                         */
  94. extern unsigned short
  95.        open_chan(unsigned short);       /* Open communications channel  */
  96. extern unsigned short
  97.        close_chan(unsigned short);      /* Close communications channel */
  98. extern unsigned short
  99.        read_chan(unsigned short,
  100.        unsigned char *);                /* Write communications channel */
  101. extern unsigned short
  102.        write_chan(unsigned short,
  103.        unsigned char *);                /* Read communications channel  */
  104. extern unsigned short
  105.        send_blk(unsigned short,
  106.                 SYS *,
  107.        unsigned char *);                /* Send JMODEM block            */
  108. extern unsigned short
  109.        recv_blk(unsigned short *,
  110.        unsigned char *);                /* Receive JMODEM block         */
  111. extern unsigned short
  112.        encode(unsigned short,
  113.        unsigned char *,
  114.        unsigned char *);                /* Data compression routine     */
  115. extern unsigned short
  116.        decode(unsigned short,
  117.        unsigned char *,
  118.        unsigned char *);                /* Data expansion routine       */
  119. extern unsigned short
  120.        calc_crc(unsigned short,
  121.        unsigned short,
  122.        unsigned char *);                /* Calculate CRC                */
  123. extern unsigned short
  124.        file_io(unsigned short,
  125.        short *,
  126.        unsigned char **,
  127.        unsigned short);                 /* File I/O                     */
  128. extern char
  129.        *get_inp(unsigned short,         /* Get input file-name          */
  130.        char **);
  131. extern char *get_fun(unsigned short,    /* Get function (S or R)        */
  132.        char **);
  133. extern char *get_prt(unsigned short,
  134.        char **);                        /* Get port (1 - 4)             */
  135. extern void
  136.        disp(void);                      /* Display 'usage' message      */
  137. extern unsigned short
  138.        get_port(char);                  /* Convert port number          */
  139. extern unsigned char
  140.       *allocate_memory(unsigned short); /* Allocate memory              */
  141. extern void flush (void);               /* Flush the interrupt buffer   */
  142. extern unsigned short tx_sync(void);    /* Synchronize during transmit  */
  143. extern unsigned short rx_sync(void);    /* Synchronize during receive   */
  144. extern unsigned short port;             /* Port number                  */
  145. extern unsigned short timer;            /* Global timer                 */
  146. extern SYS syst;                        /* In JMODEM_F.C                */
  147. #pragma check_stack(off)                /* Turn off, all modules        */
  148. #ifdef NOENV                            /* If a compiler command        */
  149. void _setenvp(void);                    /* Dummy routine prototype      */
  150. void _setenvp()                         /* Dummy routine                */
  151. {}
  152. #endif
  153. /****************************************************************************/
  154. /*********************** E N D  OF  M O D U L E *****************************/
  155.